package io.gitee.wiqer.medium;

import java.util.HashMap;

public class SolutionNC41_MaxLength {
    /**
     *
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int maxLength (int[] arr) {
        HashMap<Integer,Integer> map = new HashMap<>();
        int max = 1;
        for(int start = 0, end = 0; end<arr.length ; end++){
            if(map.containsKey(arr[end])){
                //整体重复了，但是局部不一定重复
                start = Math.max(start, map.get(arr[end])+1);
                //注意：这里一定要取最大的start，不然就错误了
                //为什么？ 因为重复数字的索引很可能比start小
            }
            /**
             * 当前长度与最大长度比较
             */
            max = Math.max(max , end-start+1);
            /**
             * 更新最近一个数据值对应的下标
             */
            map.put(arr[end],end);
        }
        return max;
    }
}
